<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script type="text/javascript">
      /* 
        解析器在调用函数时,每次都会向函数内部传递进一个隐含的参数
          这个隐含的参数就是this,定义在全局作用域的函数,this默认值指向window
          this指向的是一个对象,这个对象我们称为函数执行的上下文对象
          根据函数调用方式的不同,this会指向不同的对象
              1.以函数的形式调用,this永远都是window
              2.以方法的形式调用时,this就是调用方法的那个对象
      */
      function fun() {
        console.log(this.name);
      }

      var obj = {
        name: '孙悟空',
        sayName: fun,
      };

      var obj2 = {
        name: '沙和尚',
        sayName: fun,
      };

      var name = '全局的name属性';
      // console.log((obj.sayName = fun)) //true

      obj.sayName(); //this就是obj
      //以函数形式调用,this是window
      fun();
    </script>
  </head>
  <body></body>
</html>
